// +----------------------------------------------------------------------
// | AjaxCity [ ajaxcity.jquery.js ]
// +----------------------------------------------------------------------
// | Copyright (c) 2012 http://www.actphp.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author : Gnipt <t@php.cn> <245291359@qq.com>
// +----------------------------------------------------------------------
// | Version : 1.1 
// +----------------------------------------------------------------------
// | Update : 2012-04-19 
// +----------------------------------------------------------------------
$.fn.ajax_city_select = function (config){
  //------------------基本函数----------------
  function _is_string(str){
    if(typeof(str) == 'string')
      return true;
    else
      return false;
  }
  //------------------设置option----------------
  function _ajax_set_option(url,select_id,default_select,is_hidden){
    //alert(url);
    $.ajax({
      type:'get',
      url:url,
      success:function(result){
        if(result){
          if(!is_hidden){
            $('#'+select_id).show();
          }else{
            $('#'+select_id).attr('disabled','disabled');
          }
          var jsondata = eval('('+result+')');
          if(_is_string(default_select)){
            for(var i= 0; i< jsondata.length; i++){
              if(default_select == jsondata[i].id){
                $('#'+select_id)[0].options.add(new Option(jsondata[i].title, jsondata[i].id,true,true));
              }else{
                $('#'+select_id)[0].options.add(new Option(jsondata[i].title, jsondata[i].id));
              }
            }
          }else{
            for(var i= 0; i< jsondata.length; i++){
              $('#'+select_id)[0].options.add(new Option(jsondata[i].title, jsondata[i].id));
            }
          }
        }
      }
    });
  }

  var render = $(this);
  //省份
  if(_is_string(config.province)){
    var new_province = $("<select class="+"sel"+" name='"+config.province+"' id='"+config.province+"' style='display:none;' >");
    $(new_province)[0].options.add(new Option("省份/直辖市", "0"));
    render.append(new_province);

    //创建城市
    if(_is_string(config.city) ){
      var new_city = $("<select class="+"sel"+" name='"+config.city+"' id='"+config.city+"' style='display:none;' >");
      render.append(new_city);
    }
    //创建区域 
    if(_is_string(config.district)){
      var new_district = $("<select class="+"sel"+" name='"+config.district+"' id='"+config.district+"' style='display:none;' >"); //TODO          
      render.append(new_district);
    }
    //列出省份
    if(_is_string(config.default_province) ){
      //设置了隐藏 省份
      if(config.hidden_province)
        _ajax_set_option(config.url,config.province,config.default_province,true);
      else{
        _ajax_set_option(config.url,config.province,config.default_province);
      }
      //如果启用了城市，则显示城市
      if( _is_string(config.city) ){
        if(_is_string(config.default_city)){
          //设置了 隐藏 城市
          if(config.hidden_city)
            _ajax_set_option(config.url+'?parent_id='+config.default_province,config.city,config.default_city,true);
          else
            _ajax_set_option(config.url+'?parent_id='+config.default_province,config.city,config.default_city);

          //如果启用了区域， 则显示区域
          if( _is_string(config.district) ){
            if(_is_string(config.default_district)){
              _ajax_set_option(config.url+'?parent_id='+config.default_city,config.district,config.default_district);
            }else{
              _ajax_set_option(config.url+'?parent_id='+config.default_city,config.district);
            }
          }
        }else{
          _ajax_set_option(config.url+'?parent_id='+config.default_province,config.city);
        }
      }

    }else{
      _ajax_set_option(config.url,config.province);
    }
  }

  //注册事件 切换省份时 取得 城市
  if(_is_string(config.city) ){
    $('#'+config.province).change(function(){
      if($(this).val() != 0){
        $('#'+config.city).empty();//清空city select
        $(new_city)[0].options.add(new Option("城市", "0"));
        _ajax_set_option(config.url+'?parent_id='+$(this).val(),config.city);

        //如果有 区域，区域更新 
        if(_is_string(config.district)){
          if($('#'+config.city).val() != 0){
            $('#'+config.district).empty();//清空city select
            $(new_district)[0].options.add(new Option("区/县", "0"));
            _ajax_set_option(config.url+'?parent_id='+$('#'+config.city).val(),config.district);
          }else{
            $('#'+config.district).empty();//清空city select
            $(new_district)[0].options.add(new Option("区/县", "0"));
          }
        }
      }
    });
  }
  //注册事件 切换城市时 取得 区域
  if(_is_string(config.district)){
    $('#'+config.city).change(function(){
      if($(this).val() != 0){
        $('#'+config.district).empty();//清空city select
        $(new_district)[0].options.add(new Option("区/县", "0"));
        _ajax_set_option(config.url+'?parent_id='+$(this).val(),config.district);
      }
    });
  }

}
